/*
 * @lc app=leetcode.cn id=650 lang=golang
 *
 * [650] 只有两个键的键盘
 */

// @lc code=start

func minSteps(n int) int {
	if n <= 1 {
		return 0
	}
	dp := make([]int, n+1)
	// dp[2] = 2
	for i := 2; i <= n; i++ {
		// 隐藏条件，j个A可以经过由1个A j次复制粘贴形成
		dp[i] = i
		for j := 2; j <= i/2; j++ {
			if i%j == 0 {
				// dp[i]为 生成
				dp[i] = min(dp[i], dp[j]+i/j)

			}

		}
	}
	return dp[n]
}

func min(i, j int) int {
	if i < j {
		return i
	}
	return j
}

// @lc code=end
